In recent years, attention has been attracted to a low-density parity-check (LDPC) code as an error correction code that provides high error correction capability with a feasible circuit scale. Because of its high error correction capability and ease of implementation, an LDPC code has been adopted in an error correction coding scheme for IEEE802.11n high-speed wireless LAN systems, digital broadcasting systems, and so forth.
An LDPC code is an error correction code defined by low-density parity check matrix H. Furthermore, the LDPC code is a block code having the same block length as the number of columns N of check matrix H (see Non-Patent Literature 1, Non-Patent Literature 2, Non-Patent Literature 3). For example, random LDPC code, QC-LDPC code (QC: Quasi-Cyclic) are proposed.
Studies are being carried out on LDPC-CC (Low-Density Parity Check Convolutional Codes) capable of performing encoding or decoding on an information sequence of an arbitrary length for LDPC code (hereinafter, LDPC-BC: Low-Density Parity Check Block Code) of a block code (e.g. see Non-Patent Literature 4 and Non-Patent Literature 5).
LDPC-CC is a convolutional code defined by a low-density parity check matrix. For example, parity check matrix HT[0, n] of LDPC-CC having a coding rate of R=1/2 (=b/c) is shown in FIG. 1. Here, element h1(m)(t) of HT[0, n] takes zero or one. All elements other than h1(m)(t) are zeroes. M represents the LDPC-CC memory length, and n represents the length of an LDPC-CC codeword. As shown in FIG. 1, a characteristic of an LDPC-CC check matrix is that it is a parallelogram-shaped matrix in which ones are placed only in diagonal terms of the matrix and neighboring elements, and the bottom-left and top-right elements of the matrix are zero.
An LDPC-CC encoder defined by parity check matrix HT[0, n] where h1(0)(t)=1 and h2(0)(t)=1 is represented by FIG. 2. As shown in FIG. 2, an LDPC-CC encoder is formed with 2×(M+1) shift registers having a bit length of c and a mod 2 adder (exclusive OR operator). Thus, a feature of the LDPC-CC encoder is that it can be realized with a very simple circuit compared to a circuit that performs multiplication of a generator matrix or an LDPC-BC encoder that performs calculation based on a backward (forward) substitution method. Also, since the encoder in FIG. 2 is a convolutional code encoder, it is not necessary to divide an information sequence into fixed-length blocks when encoding, and an information sequence of any length can be encoded.
Patent Literatures 1 and 2 describe an LDPC-CC generating method based on a parity check polynomial. In particular, Patent Literature 1 describes a method of generating an LDPC-CC using parity check polynomials having a time-varying period of two, a time-varying period of three, a time-varying period of four, and a time-varying period of a multiple of three. In particular, Patent Literature 2 describes a relationship between time-varying periods and parity check polynomials.